\section{Introduction}
\subsection{The Framework}
\src{DockingFrames} is an open source Java Swing framework. This framework allows to write applications with floating panels: \src{Component}s that can be moved around by the user.

\src{DockingFrames} consists of two libraries, \src{Core} and \src{Common}. \src{Common} provides advanced functionalities that are built on top of \src{Core}, it is a wrapper around \src{Core} and requires \src{Core} to work.

This guide does not claim to be complete nor that all of its parts are relevant. It is intended as a starting point to explain basic concepts and to find out which classes, interfaces and properties are important for developers. This document only covers \src{Common}, \src{Core} has its own guide. 

You can utilize \src{Common} without understanding \src{Core}, but knowing at least some basics about \src{Core} will make life much easier.

\subsection{Previous versions}
\subsubsection{1.0.8}
Version 1.0.8 is an important milestone: for the first time the framework contains all the code necessary to handle ``real world'' applications:
\begin{itemize}
 \item Due to the new placeholder-mechanism, stored locations are now very stable and any layout can be recreated anytime.
 \item Due to the new \src{CLocationModeManager} \src{Common} is now much flexibler, the new real-fullscreen-maximization feature for free floating panels already makes use of this flexibility.
 \item Tabs are now put in a menu if there is not enough space to show them; and they can be shown on all sides.
 \item Applications can prevent a user from closing a \src{Dockable}, e.g. they could ask the user if he would like to save its data before closing the \src{Dockable}.
 \item And there are many more small improvements and bugfixes, have a look at the \src{transition.pdf} document that comes alongside the framework.
\end{itemize}

Looking at the questions of our forum \footnote{\url{http://forum.byte-welt.de/forumdisplay.php?f=69&langid=2}} the framework is now feature complete. So the next version is 1.1.0, it will address the issues mentioned in chapter \ref{sec:suggestions} which could not be addressed in 1.0.8.

\subsubsection{1.1.0}
In version 1.1.0 it is all about refining existing features and making interaction more smooth. With version 1.1.0 the framework has reached a mature state. The most important features of this release are:
\begin{itemize}
 \item The end of the ``secure'' packages. From now on unsigned applets and webstart applications are supported by the basic classes, the framework is able to switch between a ``restricted mode'' and a ``free mode'' at any time.
 \item Almost all properties are now handled by \src{UIProperties} (a class from the \src{Core} project), this allows clients to replace almost all properties.
 \item New listeners like the \src{CDockableLocationListener} can keep track of the visibility of dockables, and in this case ``visibility'' means whether the user can actually see the item or not.
 \item And the ``perspective'' API allows clients to analyze and modify a layout without the need to create \src{CStation}s and \src{CDockable}s.
\end{itemize}

\subsection{The current version: 1.1.1}
There are two sides of version 1.1.1. First, it includes a lot of maintenance, interfaces were streamlined, minor annoyances got removed, missing features implemented. Second, the Toolbar Extension was included, a lot new behavior was implemented to support the extension.
\begin{itemize}
 \item The Toolbar Extension was added
 \item The code for drag and drop was overhauled. Stations now consist of layers, operations are now \src{Object}s, there are new points where clients can modify the drag and drop behavior (like the \src{Inserter}).
 \item There are now animations during drag and drop.
 \item Added new configuration options, especially for windows (\src{ScreenDockStation}) and for tabs.
\end{itemize}
